import java.util.HashMap;
import java.util.Map;

/*
 * @lc app=leetcode.cn id=387 lang=java
 *
 * [387] 字符串中的第一个唯一字符
 *
 * https://leetcode-cn.com/problems/first-unique-character-in-a-string/description/
 *
 * algorithms
 * Easy (53.94%)
 * Likes:    487
 * Dislikes: 0
 * Total Accepted:    251.4K
 * Total Submissions: 466.1K
 * Testcase Example:  '"leetcode"'
 *
 * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
 * 
 * 
 * 
 * 示例：
 * 
 * s = "leetcode"
 * 返回 0
 * 
 * s = "loveleetcode"
 * 返回 2
 * 
 * 
 * 
 * 
 * 提示：你可以假定该字符串只包含小写字母。
 * 
 */

// @lc code=start
class Solution {
    public int firstUniqChar(String s) {
        int ret = -1;
        Map<Character, Integer> hashMap = new HashMap<>();
        // 遍历一遍字符串,将值存入哈希图
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            int cnt = hashMap.getOrDefault(c, 0);
            hashMap.put(c, cnt + 1);
            System.out.println(c + ": " + hashMap.get(c));
        }
        // 在遍历一遍，找出出现次数为1的第一个字符
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            int cnt = hashMap.get(c);
            if (cnt == 1) {
                ret = i;
                break;
            }
        }
        return ret;
    }
}
// @lc code=end

